科技新知
Swarm mode 上線 6 - 2| 升級陷阱
上一期筆者就介紹寺過swarm的相容性,可以任意地刪除其中node、加入新的node,系統會自動同步各機狀態。今日,我們就來討論一下加減的流程吧。
實戰輪調流程
假設我們有5個 node,都為manager,各個 docker 版本都為28.0.4 ,我們將要關掉node 5 (ubuntu 22),並加入node 6 (ubuntu24),輪調流程如下
- 如果node5有vvip,login node 5,關掉vvip
systemctl stop keepalived
- login node1, 把node5降為drain模式,變為worker,並從群集中刪除
docker node update --availability drain node5
docker node demote node5
- 若然node5不是直接關機、刪除,只想好好地離開群集,可以 login node5, 在node5上預先執行
docker swarm leave
- 若然node5不是直接關機、刪除,只想好好地離開群集,可以 login node5, 在node5上預先執行
docker node rm --force node5
- 如果之前node5有好好地離開群集,而且狀態已經轉為down,那麼就不用"force"了,用最保守的刪除指令就可以
docker node rm node5
- 如果之前node5有好好地離開群集,而且狀態已經轉為down,那麼就不用"force"了,用最保守的刪除指令就可以
- login node1, 取得manager token
docker swarm join-token manager
- node5關機,新增node6,使用相容的ip段,或者使用node5的ip
- login node6, 加入群集,設定vvip
docker swarm join --token xxxx XX_IP:XX_PORT
systemctl stop keepalived
這陷阱這陷阱 偏我遇上
上述的操作,有一些可能的陷阱,筆者就剛好踩過,未來不知道會不會有官方保證
- docker的版本需要相同,不同版本可能不能加入群集,例如
- docker 28.0.4 不能加到 docker 27.5.1。
- docker 27.2.x 不能加到 docker 27.5.1。
- docker swarm,官方雖然宣稱支援不同版本共存,但這指的是已加入的node,在不解綁的情況下原機升級。
- 在swarm已有多版本共存的情況下,有一個node選擇完全脫離,它想再加入,也是會失敗的。可能這不是docker自身的限制,而是底層library的相容性問題。筆者在實測不同版本時,就得到這樣的error。
docker credentials: cannot check peer: missing selected ALPN property